package com.utn.tp.integrador.controlador;

import android.content.Context;
import android.os.AsyncTask;

import com.utn.tp.integrador.bd.BaseDatosSingleton;
import com.utn.tp.integrador.entidades.MensajeWeb;
import com.utn.tp.integrador.manejomensajes.InfoServicioWeb;
import com.utn.tp.integrador.manejomensajes.ServicioWebSingleton;
import com.utn.tp.integrador.notificaciones.NotificacionMensajeWeb;

public class MandarMensajeWebAsyncTask extends
		AsyncTask<String, Integer, InfoServicioWeb> {

	MensajeWeb mensaje;
	boolean isUpdate;
	Context context;
	String fecha;
	String hora;

	public MandarMensajeWebAsyncTask(MensajeWeb mensaje, boolean isUpdate,
			Context context, String fecha, String hora) {
		this.mensaje = mensaje;
		this.isUpdate = isUpdate;
		this.context = context;
		this.fecha = fecha;
		this.hora = hora;
	}

	@Override
	protected InfoServicioWeb doInBackground(String... params) {
		InfoServicioWeb result = null;

		try {
			result = ServicioWebSingleton.getInstance(params[0], params[1])
					.sendMessage(mensaje);
		} catch (Exception e) {
		}
		mensaje.setFecha(fecha + " " + hora);
		if (result != null && InfoServicioWeb.SUCCESS == result.getCode())
			mensaje.setTipo(MensajeWeb.TYPE_INBOX);
		else
			mensaje.setTipo(MensajeWeb.TYPE_OUTBOX);
		if (isUpdate)
			BaseDatosSingleton.getInstance(context).getBaseDatos()
					.updatearMensajeWeb(mensaje);
		else
			BaseDatosSingleton.getInstance(context).getBaseDatos()
					.insertarMensajeWeb(mensaje);
		String nombreContacto = BaseDatosSingleton.getInstance(context)
				.getBaseDatos()
				.idContactoAsignadoAUsuario(mensaje.getDestinatario());
		BaseDatosSingleton.getInstance(context).getBaseDatos()
				.insertarRegistro(fecha, hora, nombreContacto, 3);
		return result;
	}

	@Override
	protected void onPostExecute(InfoServicioWeb result) {
		super.onPostExecute(result);
		if (result != null && result.getType() != null
				&& result.getType().equals(InfoServicioWeb.SUCCESS_MESSAGE)) {
			NotificacionMensajeWeb.notifyEnviado(context);
			synchronized (this) {
				notifyAll();
			}
		} else {
			NotificacionMensajeWeb.notifyError(context);
		}
	}
}
